/**
 * 转换树数据
 * 
 * @param {Array}
 *            rows 加载的原始数据
 * @return {Array} 返回转换后的数据
 */
//var tree=(function(obj){
//	var convert=function(rows){
//		var nodes = [];
//		// 得到顶层节点
//		for (var i = 0; i < rows.length; i++) {
//			var row = rows[i];
//			if (!exists(rows, row.parentId)) {
//				nodes.push({
//					id : row.id,
//					text : row.text,
//					attributes : row
//				});
//			}
//		}
//		var toDo = [];
//		for (var i = 0; i < nodes.length; i++) {
//			toDo.push(nodes[i]);
//		}
//		while (toDo.length) {
//			var node = toDo.shift(); // 父节点 
//			// 得到子节点 
//			for (var i = 0; i < rows.length; i++) {
//				var row = rows[i];
//				if (row.parentId == node.id) {
//					var child = {
//						id : row.id,
//						text : row.text,
//						attributes : row
//					};
//					if (node.children) {
//						node.children.push(child);
//					} else {
//						node.children = [child];
//					}
//					toDo.push(child);
//				}
//			}
//		}
//		return nodes;
//	};
//	
//	var exists=function(rows, parentId){
//		for (var i = 0; i < rows.length; i++) {
//			if (rows[i].id == parentId)
//				return true;
//		}
//		return false;
//	}
//	
//	
//	obj.convertTreeAppendRoot=function(rows, parent) {
//		//console.info(typeof(rows));
//		var rowdata=[];
//		var len=rows.length;
//		for(var i=0;i<len;i++){
//			rowdata.push(rows[i]);
//		}
////			Array.prototype.slice.call(jQuery.extend(true, {}, rows));
//		rowdata.push({
//			id : -1,
//			text : '根节点',
//			parentId : ''
//		});
//		return convert(rowdata);
//	};
//	
//	return obj;
//}(tree||{}));

function convert(rows) {
	function exists(rows, parentId) {
		for (var i = 0; i < rows.length; i++) {
			if (rows[i].id == parentId)
				return true;
		}
		return false;
	}
	var nodes = [];
	// 得到顶层节点
	for (var i = 0; i < rows.length; i++) {
		var row = rows[i];
		if (!exists(rows, row.parentId)) {
			nodes.push({
				id : row.id,
				text : row.text,
				attributes : row
			});
		}
	}
	var toDo = [];
	for (var i = 0; i < nodes.length; i++) {
		toDo.push(nodes[i]);
	}
	while (toDo.length) {
		var node = toDo.shift(); // 父节点 
		// 得到子节点 
		for (var i = 0; i < rows.length; i++) {
			var row = rows[i];
			if (row.parentId == node.id) {
				var child = {
					id : row.id,
					text : row.text,
					attributes : row
				};
				if (node.children) {
					node.children.push(child);
				} else {
					node.children = [child];
				}
				toDo.push(child);
			}
		}
	}
	return nodes;
}

/**
 * 转换树数据,为树增加一个根节点
 * 
 * @param {Array}
 *            rows 加载的原始数据
 * @param {Object}
 *            parent DOM对象,代表父节点
 * @return {Array} 返回转换后的数据
 */
function convertTreeAppendRoot(rows, parent) {
	//console.info(typeof(rows));
	var rowdata=[];
	var len=rows.length;
	for(var i=0;i<len;i++){
		rowdata.push(rows[i]);
	}
	rowdata.push({
		id : -1,
		text : '根节点',
		parentId : ''
	});
	return convert(rowdata);
}
/**
 * 获得父节点及其所有子节点Id
 * 
 * @param {jQuery对象}
 *            tree jQuery树对象:$('#treeId')
 * @param {Object} 
 *            node 父节点
 * @return {Array} 父节点及其所有子节点Id
 */
function getAllChildNodeId(tree, node){
	var ids = [];
	var childs = [];
	// 判断是否为叶子节点,如果是叶子节点无法获取子节点
	var isLeaf = $(tree).tree('isLeaf', node.target);
	if (!isLeaf) {
		childs = $(tree).tree('getChildren', node.target);
	}
	// 父节点id
	ids.push(node.id);
	for (var index in childs){
		// 子节点id
		ids.push(childs[index].id);
	}
	return ids;
}